package 周赛;

import java.util.Arrays;

public class 最少交换次数来组合所有的1 {
    public int minSwaps(int[] nums) {
         //统计1的数量
        int oneNum = Arrays.stream(nums).sum();
        int n = nums.length,ans = n;
        int zeroNum = 0;
        for (int i = 0; i < 2 * n; i++) {
            if (i>=oneNum){
                ans = Math.min(ans,zeroNum);
                //右移窗口
                if (nums[(i-oneNum)%n]==0)
                    zeroNum--;
            }
            if (nums[i%n]==0)
                zeroNum++;
        }
        return ans;
    }
}
